// @ts-check

/** @type {import("stylelint").Config} */
export default {
    extends: [
      "stylelint-config-standard",
      "stylelint-config-html/vue",
      "stylelint-config-recess-order"
    ],
    plugins: ["stylelint-scss", "stylelint-order", "stylelint-prettier"],
    overrides: [
      {
        files: ["**/*.(css|html|vue)"],
        customSyntax: "postcss-html"
      },
      {
        files: ["*.scss", "**/*.scss"],
        customSyntax: "postcss-scss",
        extends: [
          "stylelint-config-standard-scss",
          "stylelint-config-recommended-vue/scss"
        ]
      }
    ],
    rules: {
      "prettier/prettier": true,
      "selector-class-pattern": null,
      "no-descending-specificity": null,
      "scss/dollar-variable-pattern": null,
      "selector-pseudo-class-no-unknown": [
        true,
        {
          ignorePseudoClasses: ["deep", "global"]
        }
      ],
      "selector-pseudo-element-no-unknown": [
        true,
        {
          ignorePseudoElements: ["v-deep", "v-global", "v-slotted"]
        }
      ],
      "at-rule-no-unknown": [
        true,
        {
          ignoreAtRules: [
            "tailwind",
            "apply",
            "variants",
            "responsive",
            "screen",
            "function",
            "if",
            "each",
            "include",
            "mixin",
            "use"
          ]
        }
      ],
      "rule-empty-line-before": [
        "always",
        {
          ignore: ["after-comment", "first-nested"]
        }
      ],
      "unit-no-unknown": [true, { ignoreUnits: ["rpx"] }],
      "order/order": [
        [
          "dollar-variables",
          "custom-properties",
          "at-rules",
          "declarations",
          {
            type: "at-rule",
            name: "supports"
          },
          {
            type: "at-rule",
            name: "media"
          },
          "rules"
        ],
        { severity: "warning" }
      ]
    },
    ignoreFiles: ["**/*.js", "**/*.ts", "**/*.jsx", "**/*.tsx", "report.html"]
  };
